package com.d3works.apps.base.service;

import com.d3works.apps.base.db.Product;
import com.d3works.apps.base.db.ProductVariant;
import com.d3works.apps.base.db.ProductVariantAttr;
import com.d3works.apps.base.db.ProductVariantValue;
import java.math.BigDecimal;

public interface ProductVariantService {

  ProductVariant createProductVariant(
      ProductVariantAttr productVariantAttr1,
      ProductVariantAttr productVariantAttr2,
      ProductVariantAttr productVariantAttr3,
      ProductVariantAttr productVariantAttr4,
      ProductVariantAttr productVariantAttr5,
      ProductVariantValue productVariantValue1,
      ProductVariantValue productVariantValue2,
      ProductVariantValue productVariantValue3,
      ProductVariantValue productVariantValue4,
      ProductVariantValue productVariantValue5,
      boolean usedForStock);

  ProductVariantValue createProductVariantValue(
      ProductVariantAttr productVariantAttr, String code, String name, BigDecimal priceExtra);

  ProductVariantAttr createProductVariantAttr(String name);

  boolean equalsName(ProductVariant productVariant1, ProductVariant productVariant2);

  boolean equals(ProductVariant productVariant1, ProductVariant productVariant2);

  ProductVariant copyProductVariant(ProductVariant productVariant, boolean usedForStock);

  ProductVariant getStockProductVariant(ProductVariant productVariant);

  Product getProductVariant(Product parentProduct, Product productModel);

  Product copyAdditionalFields(Product product, Product productModel);
}
